package BehavioralPattern.Command;

/**
 * @Classname : Receiver
 * @Description : 接受者角色——命令的实际执行者
 * @Author : chentianyu
 * @Date 2023/3/7 07:32
 */

// 抽象接受者——单据
public interface Receiver {
    // 创建单据
    void create();
    // 暂存单据
    void save();
    // 提交单据
    void submit();
    // 撤回单据
    void recall();
}


// 具体接受者——建造合同
class ConstructionContract implements Receiver {

    @Override
    public void create() {
        System.out.println("创建建造合同");
    }

    @Override
    public void save() {
        System.out.println("暂存建造合同");
    }

    @Override
    public void submit() {
        System.out.println("提交审批建造合同");
    }

    @Override
    public void recall() {
        System.out.println("撤回审批建造合同");
    }
}


// 具体接受者——营销合同
class MarketingContract implements Receiver {

    @Override
    public void create() {
        System.out.println("创建营销合同");
    }

    @Override
    public void save() {
        System.out.println("暂存营销合同");
    }

    @Override
    public void submit() {
        System.out.println("提交审批营销合同");
    }

    @Override
    public void recall() {
        System.out.println("撤回审批营销合同");
    }
}
